package main

import (
  "flag"
  "log"
  "net/http"
  _ "net/http/pprof"
  "os"
  "os/signal"
  "runtime"
  "syscall"

  "git.oschina.net/ckrissun/smarthome-server/server"
)

var configFile = flag.String("conf", "server.conf", "server config file")

func main() {
  runtime.GOMAXPROCS(runtime.NumCPU())

  flag.Parse()

  if len(*configFile) == 0 {
    println("must use a config file")
    return
  }

  cfg, err := server.NewConfigWithFile(*configFile)
  if err != nil {
    println(err.Error())
    return
  }

  var app *server.App
  app, err = server.NewApp(cfg)
  if err != nil {
    println(err.Error())
    return
  }

  sc := make(chan os.Signal, 1)
  signal.Notify(sc,
    syscall.SIGHUP,
    syscall.SIGINT,
    syscall.SIGTERM,
    syscall.SIGQUIT)

  go func() {
    <-sc

    app.Close()
  }()

  go func() {
    log.Println(http.ListenAndServe("localhost:6060", nil))
  }()

  app.Run()
}
